package baseKnowledge.niukeTest;

public class IntegerVariableEqual {
    public static void main(String[] args){
        Integer a = 1;
        Integer b = 1;
        /**
         * c!=d
         * 由于Integer的范围为：-128~127，范围内==比较，值相同，比较的为地址，由于其有缓存
         * 不在范围内，由于Integer需要重新分配空间
         *
         * 自动装箱与拆箱：
         *
         */
        Integer c = 500;
        Integer d = 500;

        Integer f=new Integer(1);
        Integer e=new Integer(500);
        Integer g=new Integer(1);
        Integer h=new Integer(500);

        System.out.println("范围内==比较："+(a == b));//true
        System.out.println("超出范围的==比较："+(c == d));//false

        System.out.println("范围内的equal比较："+(a.equals(b)));//true
        System.out.println("超出范围的equal比较："+(c.equals(d)));//true

        System.out.println("----------------------------");

        /**
         * 由于new对象，地址都是新生成的，所以==的情况下，不会相同，比较值的
         * equal首先看是否为同一类型，其次看值，均一样才true
         */
        System.out.println("范围内一个new的==比较："+(a==f));//false比较的是地址与值
        System.out.println("范围内一个new的equal比较："+(a.equals(f)));//true比较的是类型与值

        System.out.println("超出范围一个new的==比较："+(c==d));//flase
        System.out.println("超出范围一个new的equal比较："+(c.equals(d)));//true

        System.out.println("----------------------------");

        System.out.println("范围内两个new的==比较："+(g==f));//false
        System.out.println("范围内两个new的equal比较："+(g.equals(f)));//true

        System.out.println("超出范围两个new的==比较："+(g==f));//false
        System.out.println("超出范围两个new的equal比较："+(g.equals(f)));//true


        System.out.println("----------------------------");

        int a1=0;
        int b1=0;
        int c1=200;
        int d1=200;

        System.out.println("a1==b1:"+(a1==b1));
        System.out.println("c1==d1:"+(c1==d1));
    }
}
